﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
using namespace std;

void test1()
{
	int a = 10;
	int b = 0;
	int c = 1;
	//a = b = c;
	cout << (a < b);
	if (a > b == c)
		c++;
}

void test2()
{
	//判断计算机大小端
	int i = 1;
	//先创建4字节大小的元素，再强制类型转换1字节大小，
	//可以得到低地址的数据，并进行判断
	if (*(char*)&i == 0)
	{
		cout << "大端";
	}
	else
	{
		cout << "小端";
	}
}

void test3()
{
	int a[5] = { 1,3,5,7,9 };
	int* p = (int*)(&a + 1);
	printf("%d %d\n\n", *(a + 1), *(p - 1));

	printf("%p\n", a);//打印数组名地址
	printf("%p\n", &a);//打印&数组名地址

	//数组名a代表数组a的首元素地址，&a代表整个数组
	printf("%p\n", a + 1);//首地址+1，偏移一个数组元素大小
	printf("%p\n", &a + 1);//&地址+1，偏移一个数组大小
}

void test4()
{
	//char a[11] = { '1', '2', '3', '4','5', '6', '7','\0', '8', '9', 0}, * p;
	int i;       //系统遇到了/0就会停止打印
	i = 8;
	//p = a + i;
	//printf("%s\n", p - 3);	


	//char* ptr;
	char myString[] = "abcdefg";
	//ptr = myString;
	//ptr += 5;
	//cout << ptr;

	int a[4] = { 1,2,3,4 };
	int* ptr = (int*)(&a + 1);
	printf("%d", *(ptr - 1));
}


//int main()
//{
//	int x = 3, y = 3;
//	switch (x % 2)
//	{
//	case 1:
//		switch (y)
//		{
//		case 0:
//			cout << "first";
//		case 1:
//			cout << "second";
//			break;
//		default:
//			cout << "hello";
//		}
//	case 2:
//		cout << "third";
//	}
//	return 0;
//}

//int main()
//{
//	long long a = 1, b = 2, c = 3;
//	printf("%d %d %d\n", a, b, c);
//	return 0;
//}


//2023_10_1
void test5()
{
	//int p[][4] = { {1}, {3, 2}, {4, 5, 6}, {0} };
	//cout << p[1][2] << endl;

	//for (int i = 0; i < 4; i++)
	//{
	//	for (int j = 0; j < 4; j++)
	//	{
	//		cout << p[i][j] << " ";
	//	}
	//	cout << endl;
	//}

	//int ta1[2][] = { {0,1,2},{3,4,5} }; 
	//int ta2[][3] = { {0,1,2},{3,4,5} };
	//int ta3[2][4] = { {0,1,2},{3,4},{5} };
	//int ta4[][3] = { {0,2},{},{3,4,5} };

	//float a[3][4] = { 0 };
	//int i = 1, j = 2;
	//cout << a[i][j] << endl;
	//cout << *(a[i] + j) << endl;
	//cout << *(*(a + i) + j) << endl;
	//cout << *(a + i * 4 + j) << endl; 

	//int a[4][5];
	//cout << *(a + 1) + 2 << endl;

	//int a[2][2][2][2] = { 0 };
	//int i = 1, j = 1, k = 1, l = 1;
	//cout << ((((a + i) + j) + k) + l) << endl;
	//cout << *(*(*(*(a + i) + j) + k) + l) << endl;
	//cout << (((a + i) + j) + k + l) << endl;
	//cout << ((a + i) + j + k + l) << endl;

	int n[][3] = { 10,20,30,40,50,60 };
	int(*p)[3];
	p = n;
	cout << p[0][0] << "," << *(p[0] + 1) << "," << (*p)[2] << endl;
}

//int main()
//{
//	//test1();
//	//test2();
//	//test3();
//	//test4();
//	test5();
//	return 0;
//}


//int main()
//{
//	int m = 0123, n = 123;
//	printf("%o %o\n", m, n);
//	return 0;
//}

#include <cstdio>  
#include <cstring>  
#include <cstdlib>  

//int main() {
//	//int a = 12;
//	//printf("八进制 %o\n", a);  // 输出八进制的a  
//	//printf("十六进制 %x\n", a); // 输出十六进制的a，小写  
//	//printf("十六进制 %X\n", a); // 输出十六进制的a，大写  
//	//char s[40];
//	//_itoa(a, s, 2); // 把a转为二进制并存入s数组  
//	//printf("二进制 %s\n", s); // 输出二进制形式的a  
//	//int b = 0b1010;
//	//printf("%d", b);
//
//	int i = 100;
//	printf("%o", i);
//
//	return 0;
//}


//#define SQR(A) A*A
//
//int main()
//{
//	int x = 6, y = 3, z = 2;
//	x /= SQR(y + z) / SQR(y + z);
//	cout << x << endl;
//	return 0;
//}


int main()
{
	//char dog[] = "wang\0miao";
	//cout << sizeof(dog) << " " << strlen(dog) << endl;

	char p2[15] = "ABCD";
	char p1[15] = "abcd",str[50] = "xyz";
	strcpy(str + 2, strcat(p1 + 2, p2 + 1));
	printf("%s", str);

	return 0;
}